/* Autore: Nicola Agosti */
/*
Scrivere un programma che chieda all'utente di inserie la lunghezza (in metri) dei cateti di
un triangolo rettangolo e ne calcoli l'ipotenusa.
*/

#define _CRT_SECURE_NO_WARNINGS /* Necessario se utilizziamo Visual Studio */

/*
Direttive al preprocessore:
 - il preprocessore modifica il codice C prima che venga eseguita la compilazione vera e propria;
 - iniziano sempre con il carattere #;
 - non essendo istruzioni C non hanno il ‘;’ finale;

La direttiva #include:
 - la riga con #include viene sostituita dal contenuto del file indicato #include <stdio.h>;
 - il file incluso è un header file (.h) e contiene la definizione di prototipi di funzioni
   e molto altro.
 - l'inclusione di file "standard" del linguaggio come "math.h" ci permette di "abilitare"
   le funzioni "definite" all'interno di quell'header file.
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h> /* Abilita le funzioni matematiche più comuni: radice quadrata, elevamento a potenza, ecc. */

int main()
{
	/* Dichiarazione delle variabili */
	float cateto_1, catetoAlQuadrato_1, cateto_2, catetoAlQuadrato_2, ipotenusa;

	/* Input */
	printf("Inserisci la lunghezza del primo cateto: ");
	scanf("%f", &cateto_1);

	printf("Inserisci la lunghezza del secondo cateto: ");
	scanf("%f", &cateto_2);

	/* Applico il teorema di pitagora */

	/* Funzione, contenuta in "math.h", "pow(base, esponente)": esegue l'elevamento a potenza della "base" all'"esponente" scelto. */
	catetoAlQuadrato_1 = pow(cateto_1, 2);
	catetoAlQuadrato_2 = pow(cateto_2, 2);

	/* Funzione, contenuta in "math.h", "sqrt(radicando)": calcola la radice quadrata del "radicando" scelto. */
	ipotenusa = sqrt(catetoAlQuadrato_1 + catetoAlQuadrato_2);

	/* Output */
	printf("\nL'ipotenusa del triangolo e\' lunga %f metri.", ipotenusa);

	return 0;
}